Methods and systems for using dot-matrix and impact printers to print onto pre-printed forms are well known and have been used in various contexts for years. Typically, a computer application generates data. When a printout of the data is desired, the application generates instructions that tell a printer what to print and how to format the output. Printer Control Language (“PCL”) code is one commonly used format for these instructions. Numerous alternatives to PCL, such as Adobe's Postscript format, are also used in the art as application output formats.
In most computer systems the output of the application, for example a string of PCL code, is processed and passed along to a printer. For example, in a UNIX operating system environment, the application may send a LPR (Line Print Request) to the operating system. The PCL code is then typically sent by the operating system to a spooling program and then to the printer backend program. The standard printer backend program, which typically resides as part of the operating system, handles output processing for a given printer by copying the output from a spooling program to the desired printer with whatever setup parameters are specified when the print queue is created through, for example, the SMIT utility. The SMIT utility is the System Management Interface Tool, which is part of IBM's AIX UNIX software.
Alternative printing systems are well known. One such alternative system is Microsoft Windows. For example, printer manufacturers provide printer drivers which are the Windows equivalent of a UNIX printer backend. A driver is selected when a printer is added to the Windows operating system. A printer driver for Windows may be customized in much the same way that a printer backend is customized on a UNIX system.
In a personal computer environment, an impact, dot-matrix, inkjet or laserjet printer receives the printing instructions and prints the desired data onto the pre-printed form. Often pre-printed forms have several layers and carbon sheets are used to print copies of the data onto each of the layers (usually these forms are used in conjunction with an impact or dot-matrix printer). Although the data are identical on each layer, the pre-printed text may vary. For example, an invoice form may contain a shipping copy, a customer copy and a file copy, all with identical data (e.g., inventory) and different pre-printed text.
Often older, “legacy” type applications were written to only print to pre-printed forms. Accordingly, the output code generated by the legacy application is limited to instructions for printing the data. The application does not generate instructions for printing the form (i.e., the pre-printed text, boxes, logos, etc.), because at the time the application was created it was assumed that it would print to pre-printed forms.
Although the use of pre-printed forms is still very common today, particularly in mainframe legacy system environments, the technology is dated and has several drawbacks when compared with current data management systems. One significant drawback with the above-described pre-printed form systems is the substantial cost associated with using pre-printed forms. Pre-printed forms, particularly multi-layer carbon-paper forms, are significantly more expensive than standard plain paper. When a company decides to modify a pre-printed form, perhaps merely to update a phone number on the letterhead, it often must discard large inventories of pre-printed forms. Additionally, dot-matrix and impact printers are significantly more expensive to use and maintain than modern laser and inkjet printers.
In addition, because an impact printer can only have one type of form loaded at any given time, a user must reload the printer each time he wishes to print out a different type of form. In practice, organizations that use pre-printed form systems are often forced to maintain large and expensive print centers. Additionally, there are delays and costs associated with delivering pre-printed form documents from a print center to the user. Legacy applications may also lack the functionality to view and search data without printing out a hard copy. Thus, a user wishing to review data from such a system may be forced to print out very large documents. Legacy data applications may produce hundreds, or even thousands, of pages of data, when the user is only interested in a small subset of that data. In addition to the expense of printing all of the irrelevant data, the user is forced to expend time searching through the printout for the relevant data.